tg-me.com/php_fart/180
Last Update:
В 19:00 МСК минут начнётся стрим по обсуждению RFC PHP True Async.
Мой старпёрский мозг что-то припоминает, что когда-то, давным-давно, по инициативе сообщества (а именно ReactPHP и AMPHP) в PHP 8.1 завезли файберы. Это был первый шаг ядра PHP в мир асинка (генераторы не считаю).
Те же ребята сделали revolt/event-loop, чтобы иметь общую основу. Как по мне, Revolt не оправдал себя, т.к. не взял ответственность по стандартизации работы с асинком. Как будто не дожали.
И что сейчас?
У нас есть файберы, но как такового асинка нет:
- Расширения и IO остаются такими, как и 20 лет назад: PDO не асинхронный, файловая система не асинхронная, STDIN вообще блокирует поток намертво (есть pcntl, но это не ядро)
- Популярные библиотеки и фреймворки еле-еле переползли на модель RoadRunner'а, когда надо просто заботиться о том, чтобы не протекали контексты между запросами (для Laravel наставил костылей, для Symfony написали свой Runtime, и скорее всего тоже с костылями).
- Возьмите все 5 живых ORM на PHP и скажите, какие из них готовы к настоящему асинку? Доктрина в версии 2 (если не ошибаюсь) отвязалась от PDO (т.е. можно драйвера подменить на асинхронные), но, сдаётся мне, этого не достаточно без Connection Pool и изолированных Unit of Work.
ReactPHP и AMP никуда не делись, но они как будто остаются нишевыми, типа для извращенцев, как Boson. Появляются новые фреймворки, но кто о них знает и кто пойдёт переписывать под них свои проекты?
Это я к чему? Настоящий асинк в пыхе — вопрос его выживания. Асинк должен идти от ядра и поддерживаться во всех расширениях. Поэтому важность этого и последующих RFC сложно переоценить.
В общем, залетайте, фартаны на стрим. Уверен, там раскроют тему и расскажут, что к чему:
PS: если вы знакомы со скоупами контейнера в Spiral, то скоупы корутин в RFCv2 примерно такие же.
PPS: "True Async не совместим с файберами". Выглядит как стоп-слово для всего RFC. Или нет?